package com.hackathon;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class DRadarView extends SurfaceView implements SurfaceHolder.Callback{
	
	//スレッド
	private SurfaceThread thread = null;
	private boolean isZoom;
	
	//コンストラクタ
	public DRadarView(Context c) {
		super(c);
		setFocusable(true);
		this.getHolder().addCallback(this);
		
		isZoom = false;
	}
	
	@Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
        // SurfaceViewのサイズなどが変更されたときに呼び出されるメソッド。
        Log.d("SampleSurView", "surfaceChanged called.");
    }
	
	@Override
    public void surfaceCreated(SurfaceHolder holder) {
        // SurfaceViewが最初に生成されたときに呼び出されるメソッド
        // 定期的な描画はrunnableインタフェースで行うので、背景を白塗りするだけ
		Log.d("SampleSurView", "surfaceCreated called.");
		
		//一応、白塗り（すぐにスレッドで描画されるので意味はないかも）
		/*
        Canvas canvas = getHolder().lockCanvas();
        canvas.drawColor(Color.WHITE);
        getHolder().unlockCanvasAndPost(canvas);
        */
		
        // SurfaceViewはスレッドで制御する
		// Handlerはあまり使わない？
		thread = new SurfaceThread(this);
		thread.start();
    }
	
	@Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        // SurfaceViewが破棄されるときに呼び出されるメソッド
        Log.d("SampleSurView", "surfaceDestroyed");
        thread.halt();
    }
	
	//タッチイベントのコールバック
	public boolean onTouchEvent(MotionEvent event) {
		if( event.getAction() == MotionEvent.ACTION_DOWN){
			isZoom = !isZoom;
		}
		return true;
	}
	
	//スレッドの停止
	public void halt(){
		this.thread.halt();
	}
	
	//
	public boolean isZoom(){
		return isZoom;
	}
}